<?php

require_once 'classes/Role.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';

/*
 * Classe de service CRUD pour manipuler les enregistrements des Roles
 */
class SCrole{
    
    private $db;

    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    /**
    * Ajoute une Role
    * @param Role Role à ajouter
    */
   public function ajouter($unRoleAAjouter) {
       try{
           
           $query = ("INSERT INTO role (nom) VALUES (".$unRoleAAjouter->getNom().");");
           $this->db->query($query);

               $query->closeCursor();
             
       }
       catch(PDOException $e)
        {
            return new Message("Role non ajouté:".$e->getMessage());
        }
        
               return $unRoleAAjouter;
   }
    /**
     * Methode permettant de supprimer une Role
     * @param Role Role à supprimer
     * @return boolean 
     */
    public function supprimer($unRoleASupprimer){
        try{
        $query = "DELETE FROM role WHERE nom='".$unRoleASupprimer."';";
                   
                $this->db->query($query);
                $message = new Message("Role supprimé");
          
                }
                catch(PDOException $e)
        {
            $message = new Message("Role non supprimé:".$e->getMessage());
        }
               return $message;
    }
   
    /**
     *
     * @param Role RoleALister de recherche sous forme d'objet Role
     * @return un tableau d'objet Role
     */
    public function lister($RoleALister){
        try{
         

            $sql="SELECT * FROM role ";
            $sql_Where="WHERE";
            if($RoleALister!=NULL)
            {
   
                if($RoleALister->getNom()!=NULL)
                {$sql_Where .= " nom = '".$RoleALister->getNom()."' AND ";}

            }         
            
            
            $sql_Where = substr($sql_Where,0,-5);
            $sql.=$sql_Where." order by nom;";
            $lesRolesTrouves=NULL;
            $unRoleLu=NULL;
            $result = $this->db->query($sql);
            while($row = $result->fetch())
            {   
                $unRoleLu = new Role($row['nom']);
               
                    $lesRolesTrouves[]=$unRoleLu;
            }                
        }
        catch(PDOException $e)
        {
            print($e->getMessage());
            $lesRolesTrouves=NULL;
        }
        return $lesRolesTrouves;
    }

  
}

?>
